package controlador.envioCorreo;

import javax.mail.BodyPart;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.*;


public class SendAutentication {

    private String from;

    public SendAutentication() {
        this.from = "pruebasdecorreo@carmenyprendimiento.es";

    }


    private Session auth() {
        Session session = null;

        String host = "smtp.1and1.es";
        
        System.out.println("Prueba para enviar un mail..." + new java.util.Date());
        Properties prop = new Properties();

        prop.put("mail.smtp.host", host);
        prop.put("mail.smtp.auth", "true");

        try {

            SMTPAuthentication auth = new SMTPAuthentication();
            session = Session.getInstance(prop, auth);

        } catch (Exception e) {

            ExceptionManager.ManageException(e);

            System.out.println("Fallo la autenticacion");

        }
        return session;
    }

    private void Send(MimeMessage msg) {

        Session session = this.auth();

        try {
            System.out.println("Enviando ...");
            Transport.send(msg);
            System.out.println("Mensaje enviado!");
        } catch (Exception ex) {

            System.out.println("Fallo el envio");
            System.out.println(ex.getMessage());
        }


    }


    public void pruebaCorreo(String destino) {

        MimeMessage msg = null;

        try {

            Session session = this.auth();
            msg = new MimeMessage(session);
            BodyPart texto = new MimeBodyPart();

            texto.setText("Se ha producido una modificación en su alquiler" +
                    " \n\nEmail generado por Dame Una Pista, por favor no responda a este correo.");

            MimeMultipart multiParte = new MimeMultipart();
            multiParte.addBodyPart(texto);
            msg.setContent(multiParte);

            msg.setSubject("Modificación de Alquiler en los Sistemas DUP - Dame Una Pista");

            msg.setFrom(new InternetAddress(from, "DUP"));
            this.Send(msg);

        } catch (java.io.UnsupportedEncodingException ex) {

            ExceptionManager.ManageException(ex);
            System.out.println(ex.getMessage());
        } catch (MessagingException ex) {

            ExceptionManager.ManageException(ex);
            System.out.println(ex.getMessage());


        }

    }

    public void AltaAlquiler(String destino) {

        MimeMessage msg = null;

        try {

            Session session = this.auth();
            msg = new MimeMessage(session);
            BodyPart texto = new MimeBodyPart();

            texto.setText("Ha realizado un Alta de alquiler" +
                    " \n\nEmail generado por Dame Una Pista, por favor no responda a este correo.");

            MimeMultipart multiParte = new MimeMultipart();
            multiParte.addBodyPart(texto);
            msg.setContent(multiParte);

            msg.setSubject("Alta de Alquiler en los Sistemas DUP - Dame Una Pista");

            msg.setFrom(new InternetAddress(from, "DUP"));
            this.Send(msg);

        } catch (java.io.UnsupportedEncodingException ex) {

            ExceptionManager.ManageException(ex);
            System.out.println(ex.getMessage());
        } catch (MessagingException ex) {

            ExceptionManager.ManageException(ex);
            System.out.println(ex.getMessage());


        }

    }

    public void BajaAlquiler(String destino) {

        MimeMessage msg = null;

        try {

            Session session = this.auth();
            msg = new MimeMessage(session);
            BodyPart texto = new MimeBodyPart();

            texto.setText("Ha realizado un Alta de alquiler" +
                    " \n\nEmail generado por Dame Una Pista, por favor no responda a este correo.");

            MimeMultipart multiParte = new MimeMultipart();
            multiParte.addBodyPart(texto);
            msg.setContent(multiParte);

            msg.setSubject("Alta de Alquiler en los Sistemas DUP - Dame Una Pista");

            msg.setFrom(new InternetAddress(from, "DUP"));
            this.Send(msg);

        } catch (java.io.UnsupportedEncodingException ex) {

            ExceptionManager.ManageException(ex);
            System.out.println(ex.getMessage());
        } catch (MessagingException ex) {

            ExceptionManager.ManageException(ex);
            System.out.println(ex.getMessage());


        }

    }
   

}

